Visualizing a custom product in situ

ABSTRACT

Techniques are described for visualizing a product at the actual location in the environment at which the product is to be used or displayed. An embodiment of the approaches described herein may be used in the context of a computer-based system that can receive and store digital images, receive a request to manufacture a custom framed product including an identification of an image to be framed and a type of mat and/or frame, and display a preview image of the custom framed product that simulates the actual appearance of the product as closely as possible. With such a system, the preview image may be highly realistic under idealized lighting and display conditions.

BENEFIT CLAIM CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) ofProvisional Application No. 61/529,883, filed Aug. 31, 2011, the entirecontents of which is hereby incorporated by reference for all purposesas if fully set forth herein.

This application is related to U.S. application Ser. No. 11/925,716,filed Oct. 26, 2007, U.S. application Ser. No. 12/257,016, filed Oct.23, 2008, and U.S. application Ser. No. 12/546,582, filed Aug. 24, 2009,the entire contents of each of which are hereby incorporated byreference for all purposes as if fully set forth herein.

COPYRIGHT STATEMENT

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

APPENDIX DATA

This application includes a transmittal under 37 C.F.R. §0 1.52(e) of aComputer Program Listing Appendix. The Appendix, which comprises thebelow-listed text file that is IBM PC/XT/AT compatible and MS-Windowscompatible. All of the material disclosed in the Computer ProgramListing Appendix can be found at the U.S. Patent and Trademark Officearchives and is hereby incorporated by reference into the presentapplication for all purposes as if fully set forth herein.

Object Description: ThinningByCellularAutomata.txt, size 41,902 Bytes,created: Aug. 25, 2011

BACKGROUND

Certain approaches described in certain sections of this disclosure andidentified as “background” or “prior approaches” are approaches thatcould be pursued, but not necessarily approaches that have beenpreviously conceived or pursued. Therefore, unless otherwise indicated,it should not be assumed that any of the approaches that are sodescribed actually qualify as prior art merely by virtue ofidentification as “background” or “prior approaches.”

Several computer-automated systems are presently available with whichend users or consumers of products may design, preview, and ordercustom-manufactured products that incorporate images or graphics.Examples of products include wearing apparel, beverage vessels, andaccessory items. In a typical system, an end user or consumer uses ageneral purpose computer terminal, such as a personal computer with abrowser, to connect over a public network to a server computer. The userselects a stored graphic image, or uploads a digital image that the userobtained or made. The user selects a type of product to which thegraphic image is to be applied and specifies various parameter valuesrelating to the product such as color, size, image placement location,or others. The server computer or terminal generates a rendered imageshowing how the product will appear after custom manufacture with thespecified image applied. The user approves the rendered image and placesan order for the product. A manufacturer receives the order data,manufactures the product as specified and provides the custommanufactured product to the user.

One type of product of interest—not offered in typical prior systems—isframed or mounted materials. A frame may comprise wood molding, metalpieces, or plastics. The mounting may include one or more mats or maycomprise float mounting. The materials may include digital images offilm photographs, original digital art, prints, paintings, animationcells, or any other graphical work or work of the visual arts.Individualized online design and custom manufacture of such framed andmounted material is either impossible or imperfect using existingsystems.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a flowchart of a process for visualizing a custom productin-situ;

FIG. 2 illustrates an example marker.

FIG. 3 illustrates an example marker.

FIGS. 4A-B (collectively FIG. 4) is a flowchart of a process forcharacterizing a user site with a marker.

FIG. 5 is a flowchart of a process for building a visual asset withfound user site data.

FIG. 6 is a block diagram that illustrates a computer system with whichthe techniques herein may be implemented.

DESCRIPTION OF EXAMPLE EMBODIMENTS

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Visualizing a Custom Product In Situ

An embodiment of the approaches herein may be used in the context of acomputer-based system that can receive and store digital images, receivea request to manufacture a custom framed product including anidentification of an image to be framed and a type of mat and/or frame,and display a preview image of the custom framed product that simulatesthe actual appearance of the product as closely as possible. With such asystem, the preview image may be highly realistic under idealizedlighting and display conditions. However, the appearance of actualframed images may vary widely in different environments. For example,custom framed products typically are displayed by hanging on a wall, butthe appearance of the product may vary greatly in environments such asinterior rooms with different levels of lighting, kinds of lighting,kinds of walls, wallpaper, reflective surfaces, or other backgroundenvironment.

Frame elements and mats are represented in 3D models with parameterizedvalues to permit resizing and use with different visual material. Forexample, 3D models of frame elements may be prepared by placing actualframe stick material in a fixed rig adjacent to a first surface mirror;a laser is projected at a known angle against the surface of the framestick material and a digital image is formed of the molding togetherwith the laser line and a programmed computer deduces, from the laserline, a geometry of a front surface of the frame stick material and therear profile is obtained from the first surface mirror. A subsequentimage is taken with the laser line shuttered off, to capture an actualsurface texture of the molding. The resulting perspective view of themolding surface texture is flattened to permit subsequent mapping of theflattened texture onto a computer-generated 3D model of the molding. Formats, actual thickness may be manually measured and entered as aparameter value, and a flat plan view digital image of the mat texturemay be taken and used in 3D texture mapping.

In an embodiment, the preview image of a custom framed product may bemodified in a way that closely simulates the actual appearance that thecustom framed product will have in a particular environment.

The approaches herein offer numerous benefits in comparison to priorapproaches. For example, the design of the example markers shown hereinand the nature of recognition is different for characterizing thegeometry of the space. The design of the example markers and theprocessing logic described herein allows for both the characterizationof the geometry and also the lighting. This robust characterizationenables ensuring that geometry of a visualized product is accurate inthe characterized environment. In addition, the logic herein can adjustthe nature of the rendering to compensate for the color or lighting ofthe user environment based on a user image of a single marker and singleuser-provided photograph.

Further, the system(s) herein accommodate the dynamic nature of custommanufactured products, which can be configured both in the nature of theassembly as well as the nature of the embellishment. The system(s)contemplate the sharing of these characterized environments in an onlinemarketplace together with configured/designed product to be visualizedin-situ. The “complete” nature of the system(s) contemplate thecharacterization of product for configuration/embellishment, enablingusers to configure/embellish and visualizing the resultant embodimentsin characterized environments.

For purposes of illustrating the in-situ visualization system andmethod, embodiments described herein refer to a custom framed product.However, the in-situ visualization system and method may also be used tovisualize other mountable or displayable custom products for which it isdesirable to provide an in-situ visualization of the custom product tousers. Examples of other custom products to which the in-situvisualization system and method may be applied include custommanufactured products with user provided images or text (see, forexample, related U.S. patent application Ser. No. 12/546,582) and aproduct on which a customized embroidery has been placed (see, forexample, related U.S. patent application Ser. No. 12/257,016).

A Process for Visualizing a Custom Product In-Situ

With reference to FIG. 1, in an embodiment, a data processing processcomprises the following general steps:

A digital representation of a marker is transmitted (block 101) to auser. For example, the user, who may be an end consumer of a commercialcustom manufactured product service, uses a computer terminal to connectto a server computer associated with the service. The user eitherestablishes an account with the service or logs into an existingaccount. The user initiates a process of designing a custom product. Theuser is prompted to download or print a digital file, such as a PDFdocument or graphical image file, containing the representation of themarker.

The user prints (block 102) the marker on a sheet of paper. In anembodiment, the printed size of the sheet of paper is stored in theservice in association with data describing the marker. For example, theservice may store metadata indicating that a particular marker is 8 ½×11inches, or metric size A4, or any other suitable size, and the user willbe prompted or otherwise required to print the marker on a sheet of thatsize.

The user positions (block 103) the paper with marker in theirenvironment at a location at which the user wishes to visualize thecustom manufactured product. For example, the user attaches the sheet ofpaper to a wall on which the user plans to mount or display acustomizable product.

The user takes (block 104) a digital photo of the marker in-situ. Inthis context, “in situ” means at the actual location in the environmentat which a custom product is to be used or displayed.

The user transmits (block 105) the photo to an In-Situ Visualizationservice.

As further described herein, the service uses the marker to characterize(block 106) the position, orientation and lighting of the userphotograph.

The service produces (block 107) a digital asset that visualizes acustom product in-situ. The digital asset may be produced such that thecustom product as visualized by the digital asset reflects the detectedposition and orientation of the marker in the user photograph and thelighting at the actual location of the marker. For example, the digitalasset may be a digital graphic image that the service can cause to bedisplayed on the user computer terminal to give the user a simulatedview of a realistic appearance of the custom manufactured product as ifactually mounted or displayed in the user environment at the locationwhere the user previously positioned the sheet. Instead of a digitalimage, the digital asset may be digital video, digital audio/visualprogram, or graphical model of the custom product. In an embodiment,displaying the digital asset as described in this paragraph may beimplemented in part as described in U.S. application Ser. No.11/925,716, filed Oct. 26, 2007, the entire contents of which are herebyincorporated by reference for all purposes as if fully set forth herein.

Aspects of components of the preceding general process are nowdescribed.

Marker

In an embodiment, a marker may have the following characteristics. Themarker may have one or more linear components that may be recognized,using image recognition techniques, as lines in a photograph taken by adigital camera. For example, in an embodiment the marker comprises aplurality of lines that are typically 0.25″ to 0.5″ inches in width orthickness. Linear components of these sizes are expected to appearsufficiently thick or bold in a user image to permit computer-basedrecognition of the lines in the user image, even in the presence ofbackground user environmental elements such as wall textures, othermounted materials, doors, wall corners, floors, and other elements.Lines that are too thin may be difficult to recognize as part of themarker, whereas lines that are too thick may be difficult to accuratelyposition in space in relation to the environment.

In an embodiment, the marker has a border when printed and photographed,so that the linear components are isolated from other picture elementsin the environment. The border may be a blank margin. Thus, in anembodiment, a blank border separates the linear components from an edgeof a printed sheet showing the marker. Therefore, the border enablesbetter recognition of the marker from the environment and breaks orseparates the connectivity of the linear components from other imageelements that are not part of the marker.

In an embodiment, the linear components are arranged to form aconnectivity graph. The connectivity graph is any association of arcsthat are connected at points termed nodes to form a plurality ofenclosed regions termed polytopes. In an embodiment, each particularmarker has a particular connectivity graph with different connectivitiesas compared to other marker instances as determined by a plurality offeatures. Example features that may differentiate one connectivity graphfrom another include aspects of line intersections, number of lines, andnumber of enclosed regions. Embodiments do not require use of anyparticular marker format or style; for example, while one exampledisclosed herein has the general appearance of a rectangular grid, manyother geometric arrangements may be used. What is important is that theservice has stored metadata describing a reference connectivity graphthat is expected to be seen in the user's digital image of the markerand environment.

In an embodiment, the form of the connectivity graph of the marker isdistinct in orientation. For example, each marker is provided with oneor more features such that changing an orientation or rotation of themarker yields a different visual appearance. This characteristic enablescomputer analysis of the user digital image to determine the actualorientation that was used for the marker when it was placed in the userenvironment.

In an embodiment, the spatial relationships of the connectivity graphare recorded, and used as a means of detecting the position andorientation of the marker in the photograph. For example, detecting mayinvolve seeking to recognize known features of nodes, lines, andpolytopes in a reference marker that match the same features in the userdigital image.

In an embodiment, features of nodes include a count of nodes in theentire marker graph, a count of arcs connecting at a given node, and anadjacency of a node to polytopes having a given count of nodes. Thesefeatures of nodes can be used to differentiate one connectivity graphfrom another. That is, if the count of nodes, count of arcs connectingat a given node, and an adjacency to a count of polytopes of a givennode count are known, then the same features can be identified when theuser's digital image is processed, and the marker can be recognized inthe user's digital image only when the counts and adjacency match.

In an embodiment, features of lines also may be used for detection anddifferentiation. In an embodiment, relevant features include the numberof lines (arcs) or count of arcs in the marker graph, and the adjacencyof each line to polytopes of a given arc count.

In an embodiment, features of enclosed regions or polytopes also may beused for detection and differentiation. In an embodiment, featuresrelevant to the number of enclosed regions (polytopes) include a countof polytopes in the marker graph and a count of the nodes in eachpolytope.

In certain embodiments, the connectivity graph of lines may also beuser-readable as a symbol, graphic, or legend, such as a company's brandor trademark.

In an embodiment, one or more open spaces are provided in the printedmarker and may be unprinted or printed with light colors or tones thatprovide a means of detecting the lighting of the user site. The openspaces may be termed “light sampling points”. Additionally, fullprinting areas of the line graph of the marker are known, and may betermed “dark sampling points”. If the “light sampling points” and “darksampling points” are detected in a user image of the marker in theenvironment, then based on luminance values or other data representingthe sampling points, the computer can determine a lighting gradient thatexists between the sampling points and can modify the appearance of adigital asset to simulate the actual lighting in the user environment.

Colors may comprise black, white, and gray, in one embodiment and canfacilitate different types of image analysis. For example, if thecomputer cannot detect a gray space in a candidate marker in the userimage, then the computer can determine that the user image has excessivewhite level or is “blown out” and needs to be retaken to permit accuraterecognition.

The lighting in an environment can appear to have a color bias whenrecorded by a digital device such as a digital camera. This bias resultsbecause the light illuminating the environment may be one or more of avariety of different types including sunlight, incandescent, mercuryvapor, fluorescent, etc. that have particular spectral distributionsthat the human eye sees as white, but that the digital device records asa particular color.

In one embodiment, the marker includes a medium tone gray area thatpermits accurate recognition of a lighting bias in the user image.Additionally or alternatively, pastel color tones may be used to assistuser recognition of color bias in the lighting of the user environment.For example it may be useful to include a known green tone or pink tonein selected areas of the reference marker to aid in recognizing whetherthe user environment is principally illuminated using fluorescent lampsor incandescent lamps and applying a similar color bias to the digitalasset that simulates the custom manufactured product in the environmentunder the same lighting.

Example Markers

FIG. 2 and FIG. 3 illustrate examples of markers. Referring first toFIG. 2, in one embodiment, a marker resembles a trademark of a businessentity, in this case, the Z logo of Zazzle Inc., Redwood City, Calif.Marker 202 comprises a plurality of arcs 204. Example nodes 206A, 206Bare at intersections of arcs, and the marker defines a plurality ofpolytopes of which polytopes 208A, 208B, 208C are examples. Cornerportions 210 of the marker 202 are non-uniform with respect to themanner of arc intersection so that an orientation of the marker may bedetected using computer image analysis techniques.

The count of arcs associated with a particular node also varies; forexample, node 206A is at an intersection of four (4) arcs whereas node206B is at an intersection of three (3) arcs. Therefore when the marker202 is recognized in a user image the marker may be characterized interms of the number of nodes and the count of arcs at each node andcompared to reference data describing a reference marker to determine ifa match occurs. The marker 202 also may be characterized by the numberof adjacent polytopes associated with a node; for example, node 206A isassociated with four (4) adjacent polytopes whereas node 206B has three(3) adjacencies. Further, the characterization data for a particularmarker enables efficient image processing; for example, an imagerecognition algorithm may be configured to reject a candidate itemrecognized in a user image as a potential matching marker at theearliest time at which it is determined that a characterization of theitem does not match a reference marker. For example, as the computerproceeds to recognize a candidate item, as soon as the computerdetermines that the candidate item has too few or too many arcs, nodes,or polytopes, the candidate item may be rejected and the process maymove on to considering another candidate item.

The number of characterization items for a marker preferably isrelatively small to avoid requiring unnecessarily large amounts of dataprocessing time. For example it is known that when a marker is complexand has a large number of arcs, nodes and polytopes, the processing timeand storage space needed to accurately recognize the marker may becomeprohibitive. Therefore, markers having relatively simple connectivitygraphs are preferred.

As another example, in FIG. 3, a marker resembles a grid of rectangles.The arrangement of FIG. 3 offers the benefit of fitting a rectangularletter sized sheet of paper well.

In both FIG. 2, FIG. 3, the marker includes a blank border around theperimeter of the marker, lines that are large enough to detect in a userimage, and other features such as lines, intersections, and enclosedregions that are uniquely recognizable against a background. Further,FIG. 2, FIG. 3 represent markers that incorporate shapes or graphs thatare otherwise uncommon in a natural setting, which improves theperformance of the recognition process herein.

In various embodiments, the service may provide a marker that isparticular to the end user or customer, or may provide a plurality ofdifferent markers that the end user may select from and download. Forexample, different markers may be associated with or tied to differentproducts, services, users, or classes of products. For example,different products may have different sizes and the user may wish tovisualize two different products of different sizes in the same generalenvironment; in such a case the service may provide two differentmarkers of different sizes. Different products of different types alsomay warrant the use of different markers. For example, a custom paintedor printed stretch canvas product might use a different kind of markerthan a custom decorated skateboard deck.

In-Situ Visualization Service

In an embodiment, a computer-based in-situ visualization servicecomprises one or more computer programs or other software elements thatare configured to perform the following general tasks: characterizingthe user site with the marker; building a visual asset using the founduser site data and a photograph or other digital image; rendering thedigital asset.

A Process for Characterizing the User Site With a Marker

In an embodiment, characterizing the user site with the marker generallycomprises digitally recognizing a connected graph based on a referencegraph using a process illustrated in flowchart form in FIG. 4.

First, assume that as described above, a user has produced a printed(block 102) copy of a marker, placed (block 103) the printed marker inthe user environment at a location at which a custom product will bedisplayed or mounted, taken (block 104) a digital photograph or image ofthe environment including the marker, and uploaded (block 105) the userphotograph to the service. For example, the user photograph could be adigital image of a portion of the interior of a room in which the markerhas been attached to a wall.

The process of FIG. 4 may be implemented in computer logic to recognizethe marker in the user photograph, for example, as part of using (block106) the user photograph of the marker to characterize the user photo,the location and orientation of the marker, and lighting at the markerlocation:

A linear image is produced by filtering (block 401) the user photographso that linear features in the size range of the marker lines are leftand other linear and non-linear features are filtered out. For example,a thresholded bandpass filter or an edge filter may be used. The resultis an output image which when displayed comprises only linear featuresin the size range of the marker lines as black on a white background.

The linear image is further filtered (block 402) into a Boolean array ofpixels using cellular automata, so that linear elements are one (1)pixel in width, and each line is represented in the image by its pixelsbeing set to true. Example value tables for cellular automata areattached in the Appendix. The cellular automata approach uses arule-based system with threshold neighborhood inputs. In the cellularautomata approach, neighbor pixels of a particular pixel underconsideration form instructions or opcodes to an automaton that producesa result pixel value based on the input, and the particular pixel isthen replaced with the result pixel value. Unlike prior applications ofcellular automata, in the present approach cellular automata are appliedto line thinning.

The array of pixels is traversed (block 403). When a true pixel isfound, a candidate graph is built by traversing connected pixels. Forexample, when connected pixels are identified then a node is recognized.If no true pixels are found, the algorithm ends. As the candidate graphis created and stored in memory, if the node, arc or polytope counts aregreater that of the reference graph, the candidate graph is disposed,and stored values for all connected pixels of the current line networkare set to false. In one embodiment, the candidate graph and thereference graph are represented in a computer using a winged edge datastructure. Other data structures and models may be used to representcandidate connectivity graph and the reference connectivity graph andthe invention is not limited to a winged edge data structure.

By building and using connectivity graphs, the process may rapidlydiscard candidate graphs that do not meet one or more connectivitycriteria of the reference graph. This process is unlike other approachesin which complete recognition and characterization of a candidate graphin the user image may be needed. For example, in the present approachthere is no need to complete the recognition of a candidate graph thatgrows excessively large; it is simply discarded at the earliestopportunity, increasing performance and reducing time to recognize themarker. On completion of the candidate graph, if the node, arc orpolytope counts are less than those of the reference graph, thecandidate graph is disposed.

If a candidate graph's full set of connectivity characteristics matches(block 404) the reference graph, the algorithm continues at block 407.If a candidate graph is discarded or disposed and there are more truepixels in the array of pixels (block 405), then the traversal of thearray of pixels continues at block 403. Otherwise, the algorithm ends(block 406) possibly with a notification to the user that the markercould not be detected in the user photograph.

Once there is a matching candidate graph, the orientation and positionof the matching graph in the user photograph is found by calculating(block 407) a marker transform, which maps known nodes in the referencegraph to found nodes in the matching graph. Thus, when a matchingconnectivity graph is identified, the pixel coordinates within the userimage of nodes, arcs and polytopes are known, and may be mapped usingthe marker transform to the reference graph. Point mapping techniquesusing singular value decomposition may be used, for example, todetermine the marker transform.

Once the marker transform is determined, light sampling points may befound (block 408) in the photograph. These points are used to determinea white point for the image, and a luminance gradient or map forrendering the visual asset. For example, the coordinates in referencespace of a first light sampling point may be transformed, using themarker transform, to equivalent points in user image space; at thosepoints, pixel values may be sampled or obtained to determine a baselinewhite value for the user image. In an embodiment, the luminance gradientis a set of values representing a range of the magnitude of reflectedlight across the user environment, and may be represented by a set ofdelta values in image space, for example, Δ_(u) and Δ_(v) values.

The marker transform may also be used (block 409) to find the darksampling points in the user image, which are used to set a black pointfor rendering the visual asset. Thus, information may be extrapolatedabout the user environment including its geometry and lighting, andappropriate changes may be applied in to the image in terms of chromaspectrum, luminance, brightness, and other attributes so that the imageappears, on the user's computer screen, as similar as possible to theactual appearance of the custom manufactured product when it isinstalled in the user environment.

A Process for Building a Visual Asset With Found User Site Data

In an embodiment, building a visual asset using the found user site dataand a photograph or other digital image may involve the stepsillustrated in the flowchart of FIG. 5.

Initially, a visual asset is built using layers as follows. The userphotograph is adjusted (block 501) using the data obtained from thelight sampling points and the dark sampling points.

A custom product reference is placed (block 502) into the userphotograph using the marker transform for placement; the custom productreference may comprise a unique name or identifier, a geometric placeholder such as a rectangle within a coordinate system, and thatcoordinate system transformed using the marker transform, whichrepresents the custom manufactured product in which the user isinterested.

The luminance gradient is applied (block 503) to modify the luminance ofthe custom product to match the light gradient of the user photographbased on a point of known luminance in the user image space.

Second, the custom product is displayed (block 504) using the followingsteps. In an embodiment, the user chooses the custom product and itsattributes by interacting with the service. In an embodiment, the user'sin-situ visual asset is loaded. In an embodiment, the rendering assetfor the custom product is configured. In an embodiment, the customproduct reference is set to the Custom Product asset.

Finally, in an embodiment, the in-situ asset is rendered and sent to theuser display unit or browser. In an embodiment, displaying the customproduct as described in this paragraph may be implemented as describedin U.S. application Ser. No. 11/925,716, filed Oct. 26, 2007, the entirecontents of which are hereby incorporated by reference for all purposesas if fully set forth herein.

Implementation Mechanism—Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 6 is a block diagram that illustrates a computersystem 600. Computer system 600 includes a bus 602 or othercommunication mechanism for communicating information, and a hardwareprocessor 604 coupled with bus 602 for processing information. Hardwareprocessor 604 may be, for example, a general purpose microprocessor.

Computer system 600 also includes a main memory 606, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 602for storing information and instructions to be executed by processor604. Main memory 606 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 604. Such instructions, when stored innon-transitory storage media accessible to processor 604, rendercomputer system 600 into a special-purpose machine that is customized toperform the operations specified in the instructions.

Computer system 600 further includes a read only memory (ROM) 608 orother static storage device coupled to bus 602 for storing staticinformation and instructions for processor 604. A storage device 610,such as a magnetic disk or optical disk, is provided and coupled to bus602 for storing information and instructions.

Computer system 600 may be coupled via bus 602 to a display 612, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 614, including alphanumeric and other keys, is coupledto bus 602 for communicating information and command selections toprocessor 604. Another type of user input device is cursor control 616,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 604 and forcontrolling cursor movement on display 612. The input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 600 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 600 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 600 in response to processor 604 executing one or more sequencesof one or more instructions contained in main memory 606. Suchinstructions may be read into main memory 606 from another storagemedium, such as storage device 610. Execution of the sequences ofinstructions contained in main memory 606 causes processor 604 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 610.Volatile media includes dynamic memory, such as main memory 606. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 602. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 604 for execution. For example,the instructions may initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 600 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 602. Bus 602 carries the data tomain memory 606, from which processor 604 retrieves and executes theinstructions. The instructions received by main memory 606 mayoptionally be stored on storage device 610 either before or afterexecution by processor 604.

Computer system 600 also includes a communication interface 618 coupledto bus 602. Communication interface 618 provides a two-way datacommunication coupling to a network link 620 that is connected to alocal network 622. For example, communication interface 618 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 618 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 618sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 620 typically provides data communication through one ormore networks to other data devices. For example, network link 620 mayprovide a connection through local network 622 to a host computer 624 orto data equipment operated by an Internet Service Provider (ISP) 626.ISP 626 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 628. Local network 622 and Internet 628 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 620and through communication interface 618, which carry the digital data toand from computer system 600, are example forms of transmission media.

Computer system 600 can send messages and receive data, includingprogram code, through the network(s), network link 620 and communicationinterface 618. In the Internet example, a server 630 might transmit arequested code for an application program through Internet 628, ISP 626,local network 622 and communication interface 618.

The received code may be executed by processor 604 as it is received,and/or stored in storage device 610, or other non-volatile storage forlater execution.

Extensions and Alternatives

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. Thus, the sole and exclusive indicatorof what is the invention, and is intended by the applicants to be theinvention, is the set of claims that issue from this application, in thespecific form in which such claims issue, including any subsequentcorrection. Any definitions expressly set forth herein for termscontained in such claims shall govern the meaning of such terms as usedin the claims. Hence, no limitation, element, property, feature,advantage or attribute that is not expressly recited in a claim shouldlimit the scope of such claim in any way. The specification and drawingsare, accordingly, to be regarded in an illustrative rather than arestrictive sense.

Appendix Follows

1. A method for visualizing a custom product in situ, the methodcomprising: storing first data that represents a reference connectivitygraph of a marker; obtaining a digital image of at least the marker;analyzing the digital image to generate second data that represents acandidate connectivity graph; based at least in part upon first data andthe second data, determining whether the candidate connectivity graphmatches the reference connectivity graph; in response to determiningthat the candidate connectivity graph matches the reference connectivitygraph, generating third data that at least maps nodes of the referenceconnectivity graph to nodes of the candidate connectivity graph;building a visual asset that visualizes the custom product in thedigital image using at least the third data; wherein the method isperformed by one or more computing devices.
 2. The method of claim 1,wherein the first data indicates one or more of: a count of the nodes ofthe reference connectivity graph, a count of arcs connecting at aparticular node of the reference connectivity graph, a count of lines orarcs of the reference connectivity graph, a count of polytopes of thereference connectivity graph, or a count of nodes of a particularpolytope of the reference connectivity graph.
 3. The method of claim 1,wherein the second data indicates one or more of: a count of the nodesof the reference connectivity graph, a count of arcs connecting at aparticular node of the reference connectivity graph, a count of lines orarcs of the reference connectivity graph, a count of polytopes of thereference connectivity graph, or a count of nodes of a particularpolytope of the reference connectivity graph.
 4. The method of claim 1,wherein the marker comprises one or more colored open spaces for aidinga digital image analysis technique applied to the digital image indetecting lighting in the environment in which the marker wasphotographed.
 5. The method of claim 4, wherein at least one of the oneor more colored open spaces is colored in a medium tone gray or a pastelcolor tone for aiding the digital image analysis technique in detectingcolor bias of lighting in the environment in which the marker wasphotographed.
 6. The method of claim 1, further comprising: analyzingthe digital image to detect one or more light sampling points and one ormore dark sampling points; determining a lighting gradient that existsbetween sampling points; building the visual asset based on the lightinggradient to simulate lighting in the environment in which the marker wasphotographed.
 7. The method of claim 1, further comprising applying athresholded bandpass filter or an edge filter to the digital image toproduce a digital image that comprises linear features in a size rangeof lines of the marker as black on a white background.
 8. The method ofclaim 7, further comprising using a rule-based cellular automata withthresholded neighborhood inputs to thin at least one of the linearfeatures.
 9. The method of claim 1, wherein generating the third datacomprises calculating a marker transform that maps nodes of thereference connectivity graph to nodes of the candidate connectivitygraph.
 10. The method of claim 9, further comprising determining anorientation or position of the marker in the digital image using themarker transform.
 11. The method of claim 10, further comprising using apoint mapping technique involving singular value decomposition todetermine the marker transform.
 12. The method of claim 9, furthercomprising using the marker transform to transform coordinates of alight sampling point in a coordinate space of the marker to anequivalent point in a coordinate space of the digital image.
 13. Themethod of claim 12, further comprising sampling pixel values at theequivalent point to determine a baseline white value.
 14. The method ofclaim 9, wherein building the visual asset comprises placing a customproduct reference into the digital image using the marker transform forplacement.
 15. The method of claim 1, further comprising: analyzing thedigital image to detect one or more light sampling points and one ormore dark sampling points; determining a lighting gradient that existsbetween sampling points; modifying luminance of the custom product tomatch the lighting gradient.
 16. A method for visualizing a customproduct in situ, the method comprising: analyzing a digital image of atleast a marker to detect one or more light sampling points and one ormore dark sampling points; determining a lighting gradient that existsbetween the one or more light sampling points and the one or more darksampling points; modifying luminance of the custom product to match thelighting gradient; building a visual asset that visualizes the customproduct in the digital image; wherein the method is performed by one ormore computing devices.
 17. The method of claim 16, further comprising:storing first data that represents a reference connectivity graph of themarker; analyzing the digital image to generate second data thatrepresents a candidate connectivity graph; based at least in part uponfirst data and the second data, determining whether the candidateconnectivity graph matches the reference connectivity graph; in responseto determining that the candidate connectivity graph matches thereference connectivity graph, generating third data that at least mapsnodes of the reference connectivity graph to nodes of the candidateconnectivity graph; building the visual asset that visualizes the customproduct in the digital image using at least the third data.
 18. One ormore non-transitory computer-readable media storing instructions which,when executed by one or more processors, cause performance of a methodfor visualizing a custom product in situ, the method comprising: storingfirst data that represents a reference connectivity graph of a marker;obtaining a digital image of at least the marker; analyzing the digitalimage to generate second data that represents a candidate connectivitygraph; based at least in part upon first data and the second data,determining whether the candidate connectivity graph matches thereference connectivity graph; in response to determining that thecandidate connectivity graph matches the reference connectivity graph,generating third data that at least maps nodes of the referenceconnectivity graph to nodes of the candidate connectivity graph;building a visual asset that visualizes the custom product in thedigital image using at least the third data.
 19. The one or morenon-transitory computer-readable media of claim 18, wherein the firstdata indicates one or more of: a count of the nodes of the referenceconnectivity graph, a count of arcs connecting at a particular node ofthe reference connectivity graph, a count of lines or arcs of thereference connectivity graph, a count of polytopes of the referenceconnectivity graph, or a count of nodes of a particular polytope of thereference connectivity graph.
 20. The one or more non-transitorycomputer-readable media of claim 18, wherein the second data indicatesone or more of: a count of the nodes of the reference connectivitygraph, a count of arcs connecting at a particular node of the referenceconnectivity graph, a count of lines or arcs of the referenceconnectivity graph, a count of polytopes of the reference connectivitygraph, or a count of nodes of a particular polytope of the referenceconnectivity graph.
 21. The one or more non-transitory computer-readablemedia of claim 18, wherein the marker comprises one or more colored openspaces for aiding a digital image analysis technique applied to thedigital image in detecting lighting in the environment in which themarker was photographed.
 22. The one or more non-transitorycomputer-readable media of claim 21, wherein at least one of the one ormore colored open spaces is colored in a medium tone gray or a pastelcolor tone for aiding the digital image analysis technique in detectingcolor bias of lighting in the environment in which the marker wasphotographed.
 23. The one or more non-transitory computer-readable mediaof claim 18, the method further comprising: analyzing the digital imageto detect one or more light sampling points and one or more darksampling points; determining a lighting gradient that exists betweensampling points; building the visual asset based on the lightinggradient to simulate lighting in the environment in which the marker wasphotographed.
 24. The one or more non-transitory computer-readable mediaof claim 18, the method further comprising applying a thresholdedbandpass filter or an edge filter to the digital image to produce adigital image that comprises linear features in a size range of lines ofthe marker as black on a white background.
 25. The one or morenon-transitory computer-readable media of claim 24, the method furthercomprising using a rule-based cellular automata with thresholdedneighborhood inputs to thin at least one of the linear features.
 26. Theone or more non-transitory computer-readable media of claim 18, whereingenerating the third data comprises calculating a marker transform thatmaps nodes of the reference connectivity graph to nodes of the candidateconnectivity graph.
 27. The one or more non-transitory computer-readablemedia of claim 26, the method further comprising determining anorientation or position of the marker in the digital image using themarker transform.
 28. The one or more non-transitory computer-readablemedia of claim 27, the method further comprising using a point mappingtechnique involving singular value decomposition to determine the markertransform.
 29. The one or more non-transitory computer-readable media ofclaim 26, the method further comprising using the marker transform totransform coordinates of a light sampling point in a coordinate space ofthe marker to an equivalent point in a coordinate space of the digitalimage.
 30. The one or more non-transitory computer-readable media ofclaim 29, the method further comprising sampling pixel values at theequivalent point to determine a baseline white value.
 31. The one ormore non-transitory computer-readable media of claim 26, whereinbuilding the visual asset comprises placing a custom product referenceinto the digital image using the marker transform for placement.
 32. Theone or more non-transitory computer-readable media of claim 18, themethod further comprising: analyzing the digital image to detect one ormore light sampling points and one or more dark sampling points;determining a lighting gradient that exists between sampling points;modifying luminance of the custom product to match the lightinggradient.
 33. One or more non-transitory computer-readable media storinginstructions which, when executed by one or more processors, causeperformance of a method for visualizing a custom product in situ, themethod comprising: analyzing a digital image of at least a marker todetect one or more light sampling points and one or more dark samplingpoints; determining a lighting gradient that exists between the one ormore light sampling points and the one or more dark sampling points;modifying luminance of the custom product to match the lightinggradient; building a visual asset that visualizes the custom product inthe digital image.
 34. The one or more non-transitory computer-readablemedia of claim 33, the method further comprising: storing first datathat represents a reference connectivity graph of the marker; analyzingthe digital image to generate second data that represents a candidateconnectivity graph; based at least in part upon first data and thesecond data, determining whether the candidate connectivity graphmatches the reference connectivity graph; in response to determiningthat the candidate connectivity graph matches the reference connectivitygraph, generating third data that at least maps nodes of the referenceconnectivity graph to nodes of the candidate connectivity graph;building the visual asset that visualizes the custom product in thedigital image using at least the third data.
 35. The one or morenon-transitory computer-readable media of claim 33, wherein the customproduct is a custom framed product.